#ifndef __STATE_H
#define __STATE_H

#include <string>
#include <memory>
#include "Context.hpp"

using namespace std;

class Context;

class State
{
public:
    virtual string getStateName() = 0;
    virtual void doAction(Context *, shared_ptr<State>) = 0;
    virtual void showStateChange(Context *, shared_ptr<State> old_state);
};

#endif
